home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / SNNSV32.ZIP / SNNSv3.2 / kernel / sources / krart_df.h < prev    next >
C/C++ Source or Header  |  1994-04-25  |  21KB  |  590 lines

  1. /*****************************************************************************
  2.   FILE           : krart_df.h
  3.   SHORTNAME      : 
  4.   SNNS VERSION   : 3.2
  5.  
  6.   PURPOSE        : SNNS Kernel definitions for ART-Networks 
  7.   NOTES          :
  8.  
  9.   AUTHOR         : Kai-Uwe Herrmann
  10.   DATE           : 17.05.92
  11.  
  12.   CHANGED BY     : Sven Doering
  13.   IDENTIFICATION : @(#)krart_df.h    1.8 3/15/94
  14.   SCCS VERSION   : 1.8
  15.   LAST CHANGE    : 3/15/94
  16.  
  17.              Copyright (c) 1990-1994  SNNS Group, IPVR, Univ. Stuttgart, FRG
  18.  
  19. ******************************************************************************/
  20. #ifndef __KR_ART_DEF
  21. #define __KR_ART_DEF
  22.  
  23.  
  24. /* Logical Layers for ART1 networks
  25. */
  26. #define ART1_INP_LAY 1     /* The ART1 Input layer */
  27. #define ART1_CMP_LAY 2     /* The ART1 Comparison layer */
  28. #define ART1_REC_LAY 3     /* The ART1 Recognition layer */
  29. #define ART1_DEL_LAY 4     /* The ART1 Delay layer */
  30. #define ART1_RST_LAY 5     /* The ART1 Reset layer */
  31. #define ART1_SPEC_LAY 6    /* The ART1 Special unit layer */
  32.  
  33.  
  34. /* Logical Layers for ART2 networks
  35. */
  36. #define ART2_INP_LAY    1   /* The ART2 Input Layer */
  37. #define ART2_W_LAY      2   /* The ART2 W Units (belonging to F1) */
  38. #define ART2_X_LAY      3   /* The ART2 X Units (belonging to F1) */
  39. #define ART2_U_LAY      4   /* The ART2 U Units (belonging to F1) */
  40. #define ART2_V_LAY      5   /* The ART2 V Units (belonging to F1) */
  41. #define ART2_P_LAY      6   /* The ART2 P Units (belonging to F1) */
  42. #define ART2_Q_LAY      7   /* The ART2 Q Units (belonging to F1) */
  43. #define ART2_R_LAY      8   /* The ART2 R Units (belonging to F1) */
  44. #define ART2_REC_LAY    9   /* The ART2 Recognition Layer */
  45. #define ART2_RST_LAY   10   /* The ART2 Reset Layer */
  46.  
  47. /* Logical Layers for ARTMAP networks
  48. */
  49. #define ARTMAP_INPa_LAY    1       /* the artmap-arta input layer */
  50. #define ARTMAP_CMPa_LAY    2       /* the artmap-arta comparison layer */
  51. #define ARTMAP_RECa_LAY    3       /* the artmap-arta recognition layer */
  52. #define ARTMAP_DELa_LAY    4       /* the artmap-arta delay layer */
  53. #define ARTMAP_RSTa_LAY    5       /* the artmap-arta local reset layer */
  54. #define ARTMAP_SPECa_LAY   6       /* the artmap-arta special unit layer */
  55. #define ARTMAP_INPb_LAY    7       /* the artmap-artb input layer */
  56. #define ARTMAP_CMPb_LAY    8       /* the artmap-artb comparison layer */
  57. #define ARTMAP_RECb_LAY    9       /* the artmap-artb recognition layer */
  58. #define ARTMAP_DELb_LAY   10       /* the artmap-artb delay layer */
  59. #define ARTMAP_RSTb_LAY   11       /* the artmap-artb local reset layer */
  60. #define ARTMAP_SPECb_LAY  12       /* the artmap-artb special unit layer */
  61. #define ARTMAP_MAP_LAY    13       /* the artmap map layer */
  62. #define ARTMAP_SPEC_LAY   14       /* the artmap special unit layer */
  63.  
  64. /* Logical unit numbers for ART1 networks
  65. */
  66.  
  67.   /* special units */
  68. #define ART1_NO_OF_SPEC_UNITS   8
  69.  
  70. #define ART1_CL_UNIT    1
  71. #define ART1_NCL_UNIT   2
  72. #define ART1_G1_UNIT    3
  73. #define ART1_RI_UNIT    4
  74. #define ART1_RC_UNIT    5
  75. #define ART1_RG_UNIT    6
  76. #define ART1_RHO_UNIT   7
  77. #define ART1_G2_UNIT    8
  78.  
  79.   /* delay type units */
  80. #define ART1_DEL_REC_UNIT         1
  81. #define ART1_D1_UNIT              2
  82. #define ART1_D2_UNIT              3
  83. #define ART1_D3_UNIT              4
  84.  
  85.  
  86. /* Logical unit numbers for ARTMAP networks
  87. */
  88.  
  89.   /* special units */
  90. #define ARTMAP_NO_OF_SPECa_UNITS   8
  91.  
  92. #define ARTMAP_CLa_UNIT   1
  93. #define ARTMAP_NCa_UNIT   2
  94. #define ARTMAP_G1a_UNIT   3
  95. #define ARTMAP_RIa_UNIT   4
  96. #define ARTMAP_RCa_UNIT   5
  97. #define ARTMAP_RGa_UNIT   6
  98. #define ARTMAP_RHOa_UNIT  7
  99. #define ARTMAP_G2a_UNIT   8
  100.  
  101.  
  102. #define ARTMAP_NO_OF_SPECb_UNITS   8
  103.  
  104. #define ARTMAP_CLb_UNIT   1
  105. #define ARTMAP_NCb_UNIT   2
  106. #define ARTMAP_G1b_UNIT   3
  107. #define ARTMAP_RIb_UNIT   4
  108. #define ARTMAP_RCb_UNIT   5
  109. #define ARTMAP_RGb_UNIT   6
  110. #define ARTMAP_RHOb_UNIT  7
  111. #define ARTMAP_G2b_UNIT   8
  112.  
  113.  
  114. #define ARTMAP_NO_OF_SPEC_UNITS   10
  115.  
  116. #define ARTMAP_D1_UNIT    1
  117. #define ARTMAP_CL_UNIT    2
  118. #define ARTMAP_NC_UNIT    3
  119. #define ARTMAP_G_UNIT     4
  120. #define ARTMAP_RB_UNIT    5
  121. #define ARTMAP_RM_UNIT    6
  122. #define ARTMAP_RG_UNIT    7
  123. #define ARTMAP_RHO_UNIT   8
  124. #define ARTMAP_QU_UNIT    9
  125. #define ARTMAP_DRHO_UNIT 10
  126.  
  127.   /* delay type units */
  128. #define ARTMAP_DELa_REC_UNIT   1
  129. #define ARTMAP_D1a_UNIT        2
  130. #define ARTMAP_D2a_UNIT        3
  131. #define ARTMAP_D3a_UNIT        4
  132.  
  133. #define ARTMAP_DELb_REC_UNIT   1
  134. #define ARTMAP_D1b_UNIT        2
  135. #define ARTMAP_D2b_UNIT        3
  136. #define ARTMAP_D3b_UNIT        4
  137.  
  138.  
  139.  
  140.  
  141. /* Link initialization values for the links of an ART1 network.
  142.    The last two elements of the name indicate the logical source layer
  143.    and the logical target layer
  144. */
  145.  
  146.   /* fix links for ART1 */
  147. #define ART1_LINK_INP_CMP   1.0
  148. #define ART1_LINK_INP_G1    1.0
  149. #define ART1_LINK_INP_RI    1.0
  150. #define ART1_LINK_INP_G2    1.0
  151. #define ART1_LINK_CMP_RC    1.0
  152. #define ART1_LINK_REC_G1    1.0
  153. #define ART1_LINK_REC_DEL   2.0
  154. #define ART1_LINK_DEL_DEL   1.0
  155. #define ART1_LINK_DEL_RST   1.0
  156. #define ART1_LINK_DEL_CL    1.0
  157. #define ART1_LINK_RST_REC   -2.0
  158. #define ART1_LINK_RST_RST   1.0
  159. #define ART1_LINK_RST_NCL   1.0
  160. #define ART1_LINK_G1_CMP    1.0
  161. #define ART1_LINK_RI_RG     -1.0
  162. #define ART1_LINK_RC_RG     1.0
  163. #define ART1_LINK_RG_RST    1.0
  164. #define ART1_LINK_RG_REC    -2.0
  165. #define ART1_LINK_RG_CL     -1.0
  166. #define ART1_LINK_RHO_RI    1.0
  167. #define ART1_LINK_RHO_RHO   1.0
  168. #define ART1_LINK_G2_REC    -2.0
  169. #define ART1_LINK_G2_CL     1.0
  170.  
  171.  
  172. /* trainable links for ART1 */
  173.   /* the initial values of the bottom up link weights should be
  174.              0 < weight < (1 / (beta + |I|))
  175.              where beta is a value > 0.0 and should not be too big,
  176.                    I is the number of ones in the binary input vector.
  177.                    gamma has to be choosen > 1.0.
  178.   */
  179. #define ART1_LINK_CMP_REC(beta,gamma)    (1.0 / ((beta) + (gamma) * NoOfInputUnits))
  180. #define ART1_LINK_DEL_CMP                1.0
  181.  
  182.   /* Formulas to adjust the link weights in an ART1 network
  183.   */
  184. #define ART1_ADJUST_LINK_DEL_CMP(unit)                      (unit->act)
  185. #define ART1_ADJUST_LINK_CMP_REC(unit, beta, norm) \
  186.                                        ((unit->act)/((beta) + (norm)))
  187.  
  188.  
  189.  
  190.  
  191. /* fix links for ART2 */
  192. #define ART2_LINK_INP_W               1.0
  193. #define ART2_LINK_U_W(a)              a
  194. #define ART2_LINK_W_X                 1.0
  195. #define ART2_LINK_V_U                 1.0
  196. #define ART2_LINK_X_V                 1.0
  197. #define ART2_LINK_Q_V(b)              b
  198. #define ART2_LINK_U_P                 1.0
  199. #define ART2_LINK_P_Q                 1.0
  200. #define ART2_LINK_P_R(c)              c
  201. #define ART2_LINK_INP_R               1.0
  202.  
  203. #define ART2_LINK_RST_REC(d)         -(1/(1-(d)))-10
  204. #define ART2_LINK_REC_RST             1.0
  205. #define ART2_LINK_RST_RST             1.0
  206.  
  207.  
  208.  
  209. /* trainable links for ART2 */
  210. #define ART2_LINK_P_REC(param_d,gamma) (1.0/(gamma*(1-param_d)*sqrt((double) NoOfInputUnits)))
  211. #define ART2_LINK_REC_P                0.0
  212.  
  213.   /* Formulas to adjust the link weights in an ART2 network
  214.   */
  215. #define ART2_ADJUST_LINK_REC_P(unit_u, d)       (unit_u->act / (1-d))
  216. #define ART2_ADJUST_LINK_P_REC(unit_u, d)       (unit_u->act / (1-d))
  217.  
  218.  
  219.  
  220.  
  221.  
  222. /* fix links for ARTMAP */
  223. #define ARTMAP_LINK_INPa_CMPa   1.0
  224. #define ARTMAP_LINK_INPa_G1a    1.0
  225. #define ARTMAP_LINK_INPa_RIa    1.0
  226. #define ARTMAP_LINK_INPa_G2a    1.0
  227. #define ARTMAP_LINK_CMPa_RCa    1.0
  228. #define ARTMAP_LINK_RECa_G1a    1.0
  229. #define ARTMAP_LINK_RECa_DELa   2.0
  230. #define ARTMAP_LINK_DELa_DELa   1.0
  231. #define ARTMAP_LINK_DELa_RSTa   1.0
  232. #define ARTMAP_LINK_DELa_CLa    1.0
  233. #define ARTMAP_LINK_RSTa_RECa  -2.0
  234. #define ARTMAP_LINK_RSTa_RSTa   1.0
  235. #define ARTMAP_LINK_RSTa_NCa    1.0
  236. #define ARTMAP_LINK_G1a_CMPa    1.0
  237. #define ARTMAP_LINK_RIa_RGa    -1.0
  238. #define ARTMAP_LINK_RCa_RGa     1.0
  239. #define ARTMAP_LINK_RGa_RSTa    1.0
  240. #define ARTMAP_LINK_RGa_RECa   -2.0
  241. #define ARTMAP_LINK_RGa_CLa    -1.0
  242. #define ARTMAP_LINK_RGa_DRHO   -1.0
  243. #define ARTMAP_LINK_RHOa_RIa    1.0
  244. #define ARTMAP_LINK_RHOa_RHOa   1.0
  245. #define ARTMAP_LINK_G2a_RECa   -2.0
  246. #define ARTMAP_LINK_G2a_CLa     1.0
  247.  
  248. #define ARTMAP_LINK_INPb_CMPb   1.0
  249. #define ARTMAP_LINK_INPb_G1b    1.0
  250. #define ARTMAP_LINK_INPb_RIb    1.0
  251. #define ARTMAP_LINK_INPb_G2b    1.0
  252. #define ARTMAP_LINK_CMPb_RCb    1.0
  253. #define ARTMAP_LINK_RECb_G1b    1.0
  254. #define ARTMAP_LINK_RECb_DELb   2.0
  255. #define ARTMAP_LINK_DELb_DELb   1.0
  256. #define ARTMAP_LINK_MAP_DELb    1.0
  257. #define ARTMAP_LINK_DELb_RSTb   1.0
  258. #define ARTMAP_LINK_DELb_CLb    1.0
  259. #define ARTMAP_LINK_RSTb_RECb  -2.0
  260. #define ARTMAP_LINK_RSTb_RSTb   1.0
  261. #define ARTMAP_LINK_RSTb_NCb    1.0
  262. #define ARTMAP_LINK_G1b_CMPb    1.0
  263. #define ARTMAP_LINK_RIb_RGb    -1.0
  264. #define ARTMAP_LINK_RCb_RGb     1.0
  265. #define ARTMAP_LINK_RGb_RSTb    1.0
  266. #define ARTMAP_LINK_RGb_RECb   -2.0
  267. #define ARTMAP_LINK_RGb_CLb    -1.0
  268. #define ARTMAP_LINK_RHOb_RIb    1.0
  269. #define ARTMAP_LINK_RHOb_RHOb   1.0
  270. #define ARTMAP_LINK_G2b_RECb   -2.0
  271. #define ARTMAP_LINK_G2b_CLb     1.0
  272.  
  273. #define ARTMAP_LINK_DELb_MAP    1.0
  274. #define ARTMAP_LINK_G_MAP       1.0
  275. #define ARTMAP_LINK_DELb_D1     1.0
  276. #define ARTMAP_LINK_CLa_CL      1.0
  277. #define ARTMAP_LINK_CLb_CL      1.0
  278. #define ARTMAP_LINK_RG_CL      -2.0
  279. #define ARTMAP_LINK_NCa_NC      1.0
  280. #define ARTMAP_LINK_NCb_NC      1.0
  281. #define ARTMAP_LINK_RECa_G      1.0
  282. #define ARTMAP_LINK_RECb_G      1.0
  283. #define ARTMAP_LINK_D1_RB       1.0
  284. #define ARTMAP_LINK_RHO_RB      1.0
  285. #define ARTMAP_LINK_MAP_RM      1.0
  286. #define ARTMAP_LINK_RB_RG      -1.0
  287. #define ARTMAP_LINK_RM_RG       1.0
  288. #define ARTMAP_LINK_RHO_RHO     1.0
  289. #define ARTMAP_LINK_INPa_QU     1.0
  290. #define ARTMAP_LINK_RHO_RB      1.0
  291. #define ARTMAP_LINK_INPa_QU     1.0
  292. #define ARTMAP_LINK_CMPa_QU     1.0
  293. #define ARTMAP_LINK_RHOa_DRHO  -1.0
  294. #define ARTMAP_LINK_CLb_DRHO    1.0
  295. #define ARTMAP_LINK_RG_DRHO     1.0
  296. #define ARTMAP_LINK_QU_DRHO     1.0
  297. #define ARTMAP_LINK_DRHO_DRHO  -1.0
  298. #define ARTMAP_LINK_DRHO_RHOa   1.0
  299.  
  300.  
  301. /* trainable links for ARTMAP */
  302.   /* the initial values of the bottom up link weights should be
  303.              0 < weight < (1 / (beta + |I|))
  304.              where beta is a value > 0.0 and should not be too big,
  305.                    I is the number of ones in the binary input vector.
  306.                    gamma has to be choosen > 1.0.
  307.   */
  308. #define ARTMAP_LINK_CMPa_RECa(beta,gamma)    (1.0 / ((beta) + (gamma) * ArtMap_NoOfInpUnits_a))
  309. #define ARTMAP_LINK_DELa_CMPa                1.0
  310. #define ARTMAP_LINK_CMPb_RECb(beta,gamma)    (1.0 / ((beta) + (gamma) * ArtMap_NoOfInpUnits_b))
  311. #define ARTMAP_LINK_DELb_CMPb                1.0
  312. #define ARTMAP_LINK_DELa_MAP                 1.0
  313.  
  314. /* Links of ARTMAP networks are adjusted using the ART1 formulas */
  315.  
  316.  
  317. /******************** Output and Activation function names ******************/
  318.  
  319. /* Definition of the Outputfunctions for ART1 */
  320. #define ART1_OUTFUNC    "Out_Identity"
  321.  
  322. /* Definition of the Outputfunctions for ART2 */
  323. #define ART2_OUTFUNC    "Out_Identity"
  324.  
  325. /* Definition of the Outputfunctions for ARTMAP */
  326. #define ARTMAP_OUTFUNC    "Out_Identity"
  327.  
  328.  
  329. /* Definition of the Activationfunctions for ART1 */
  330. #define ART1_ACTF_INP            "Act_Identity"
  331. #define ART1_ACTF_CMP            "Act_at_least_2"
  332. #define ART1_ACTF_REC            "Act_Identity"
  333. #define ART1_ACTF_DEL            "Act_at_least_2"
  334. #define ART1_ACTF_D              "Act_at_least_1"
  335. #define ART1_ACTF_RST            "Act_at_least_1"
  336. #define ART1_ACTF_G1             "Act_at_least_2"
  337. #define ART1_ACTF_RI             "Act_Product"
  338. #define ART1_ACTF_RC             "Act_Identity"
  339. #define ART1_ACTF_RG             "Act_less_than_0"
  340. #define ART1_ACTF_CL             "Act_at_least_1"
  341. #define ART1_ACTF_NCL            "Act_ART1_NC"
  342. #define ART1_ACTF_RHO            "Act_Identity"
  343. #define ART1_ACTF_G2             "Act_at_most_0"
  344.  
  345. /* Definition of the Activationfunctions for ART2 */
  346.  
  347. /* F0-Layer*/
  348. #define ART2_ACTF_INP            "Act_Identity"
  349.  
  350. /* F1-Layer */
  351. #define ART2_ACTF_W              "Act_ART2_Identity"
  352. #define ART2_ACTF_X              "Act_ART2_NormW"
  353. #define ART2_ACTF_U              "Act_ART2_NormV"
  354. #define ART2_ACTF_V              "Act_ART2_Identity"
  355. #define ART2_ACTF_P              "Act_ART2_Identity"
  356. #define ART2_ACTF_Q              "Act_ART2_NormP"
  357. #define ART2_ACTF_R              "Act_ART2_NormIP"
  358.  
  359. /* F2-Layer */
  360. #define ART2_ACTF_REC            "Act_ART2_Rec"
  361. #define ART2_ACTF_RST            "Act_ART2_Rst"
  362.  
  363.  
  364. /* Definition of the Activationfunctions for ARTMAP */
  365. #define ARTMAP_ACTF_INPa            "Act_Identity"
  366. #define ARTMAP_ACTF_CMPa            "Act_at_least_2"
  367. #define ARTMAP_ACTF_RECa            "Act_Identity"
  368. #define ARTMAP_ACTF_DELa            "Act_at_least_2"
  369. #define ARTMAP_ACTF_Da              "Act_at_least_1"
  370. #define ARTMAP_ACTF_RSTa            "Act_at_least_1"
  371. #define ARTMAP_ACTF_G1a             "Act_at_least_2"
  372. #define ARTMAP_ACTF_RIa             "Act_Product"
  373. #define ARTMAP_ACTF_RCa             "Act_Identity"
  374. #define ARTMAP_ACTF_RGa             "Act_less_than_0"
  375. #define ARTMAP_ACTF_CLa             "Act_at_least_1"
  376. #define ARTMAP_ACTF_NCa             "Act_ARTMAP_NCa"
  377. #define ARTMAP_ACTF_RHOa            "Act_Identity"
  378. #define ARTMAP_ACTF_G2a             "Act_at_most_0"
  379.  
  380. #define ARTMAP_ACTF_INPb            "Act_Identity"
  381. #define ARTMAP_ACTF_CMPb            "Act_at_least_2"
  382. #define ARTMAP_ACTF_RECb            "Act_Identity"
  383. #define ARTMAP_ACTF_DELb            "Act_at_least_2"
  384. #define ARTMAP_ACTF_Db              "Act_at_least_1"
  385. #define ARTMAP_ACTF_RSTb            "Act_at_least_1"
  386. #define ARTMAP_ACTF_G1b             "Act_at_least_2"
  387. #define ARTMAP_ACTF_RIb             "Act_Product"
  388. #define ARTMAP_ACTF_RCb             "Act_Identity"
  389. #define ARTMAP_ACTF_RGb             "Act_less_than_0"
  390. #define ARTMAP_ACTF_CLb             "Act_at_least_1"
  391. #define ARTMAP_ACTF_NCb             "Act_ARTMAP_NCb"
  392. #define ARTMAP_ACTF_RHOb            "Act_Identity"
  393. #define ARTMAP_ACTF_G2b             "Act_at_most_0"
  394.  
  395. #define ARTMAP_ACTF_MAP             "Act_at_least_2"
  396. #define ARTMAP_ACTF_D1              "Act_Identity"
  397. #define ARTMAP_ACTF_CL              "Act_at_least_2"
  398. #define ARTMAP_ACTF_NC              "Act_at_least_1"
  399. #define ARTMAP_ACTF_G               "Act_exactly_1"
  400. #define ARTMAP_ACTF_RB              "Act_Product"
  401. #define ARTMAP_ACTF_RM              "Act_Identity"
  402. #define ARTMAP_ACTF_RG              "Act_less_than_0"
  403. #define ARTMAP_ACTF_RHO             "Act_Identity"
  404. #define ARTMAP_ACTF_QU              "Act_Product"
  405. #define ARTMAP_ACTF_DRHO            "Act_ARTMAP_DRho"
  406.  
  407.  
  408.  
  409.  
  410. /* Definition of the Sitefunctions for ART1 */
  411. #define ART1_SITEF_RST_SELF      "Site_WeightedSum"
  412. #define ART1_SITEF_RST_SIGNAL    "Site_at_least_2"
  413. #define ART1_SITEF_REC_G1        "Site_at_most_0"
  414. #define ART1_SITEF_INP_G1        "Site_at_least_1"
  415. #define ART1_SITEF_RI            "Site_WeightedSum"
  416.  
  417.  
  418. /* Definition of the Sitefunctions for ART2 */
  419. #define ART2_SITEF_RST_SELF      "Site_WeightedSum"
  420. #define ART2_SITEF_RST_SIGNAL    "Site_at_least_2"
  421.  
  422.  
  423. /* Definition of the Sitefunctions for ARTMAP */
  424. #define ARTMAP_SITEF_RSTa_SELF       "Site_WeightedSum"
  425. #define ARTMAP_SITEF_RSTa_SIGNAL     "Site_at_least_2"
  426. #define ARTMAP_SITEF_RECa_G1a        "Site_at_most_0"
  427. #define ARTMAP_SITEF_INPa_G1a        "Site_at_least_1"
  428. #define ARTMAP_SITEF_RIa             "Site_WeightedSum"
  429.  
  430. #define ARTMAP_SITEF_RSTb_SELF       "Site_WeightedSum"
  431. #define ARTMAP_SITEF_RSTb_SIGNAL     "Site_at_least_2"
  432. #define ARTMAP_SITEF_RECb_G1b        "Site_at_most_0"
  433. #define ARTMAP_SITEF_INPb_G1b        "Site_at_least_1"
  434. #define ARTMAP_SITEF_RIb             "Site_WeightedSum"
  435.  
  436. #define ARTMAP_SITEF_ARTa_G          "Site_at_least_1"
  437. #define ARTMAP_SITEF_ARTb_G          "Site_at_least_1"
  438. #define ARTMAP_SITEF_RB              "Site_WeightedSum"
  439. #define ARTMAP_SITEF_INPa_QU         "Site_Reciprocal"
  440. #define ARTMAP_SITEF_CMPa_QU         "Site_WeightedSum"
  441.  
  442.  
  443.  
  444. /* Global fix parameters */
  445.  
  446. /* for ART 2 */
  447. #define ART2_PARAM_e                 0.00001
  448.  
  449.  
  450.  
  451.  
  452. /************************** other macros ************************************/
  453.  
  454. /*  Don't call this macro unless kra1_sort() has been run
  455. */
  456. #define ART1_CLASSIFIED       (Art1_cl_unit->Out.output >= 0.9)
  457.  
  458. /*  Don't call this macro unless kra1_sort() has been run
  459. */
  460. #define ART1_NOT_CLASSIFIABLE (Art1_nc_unit->Out.output >= 0.9)
  461.  
  462.  
  463. /*  Don't call this macro unless kra2_sort() has been run
  464. */
  465. #define ART2_CLASSIFIED       kra2_classified()
  466.  
  467. /*  Don't call this macro unless kra2_sort() has been run
  468. */
  469. #define ART2_NOT_CLASSIFIABLE kra2_not_classifiable()
  470.  
  471.  
  472.  
  473. /* Don't call this macro unless kram_sort() has been run
  474. */
  475. #define ARTMAP_CLASSIFIED     (ArtMap_cl_unit->Out.output >= 0.9)
  476.  
  477. /* Don't call this macro unless kram_sort() has been run
  478. */
  479. #define ARTMAP_NOT_CLASSIFIABLE  (ArtMap_nc_unit->Out.output >= 0.9)
  480.  
  481.  
  482. /* Check if Sitefuncname is OK
  483. */
  484. #define CHECK_SITE_FUNC(site_ptr, sitef_name)  \
  485.                  (strcmp (krf_getFuncName ((FunctionPtr) site_ptr->site_table->site_func), \
  486.                           sitef_name) \
  487.                  ) == 0
  488.  
  489. /* Check if Actfuncname is OK
  490. */
  491. #define CHECK_ACT_FUNC(unit_ptr, actf_name) \
  492.                  (strcmp (krf_getFuncName ((FunctionPtr) unit_ptr->act_func), \
  493.                           actf_name) \
  494.                  ) == 0
  495.  
  496. /* Check if Outfuncname is OK
  497. */
  498. #define CHECK_OUT_FUNC(unit_ptr, outf_name) \
  499.                  (strcmp (krf_getFuncName ((FunctionPtr) unit_ptr->out_func), \
  500.                            outf_name) \
  501.                  ) == 0
  502.  
  503.  
  504. /* Set topo_msg for unexpexted link
  505. */
  506.  
  507. #define TOPO_MSG_NO_OF_UNITS_IN_LAYER(layer_name) \
  508.                   topo_msg.error_code = KRERR_NO_OF_UNITS_IN_LAYER; \
  509.                   topo_msg.src_error_unit = 0; \
  510.                   topo_msg.dest_error_unit = 0; \
  511.                   strcpy (topo_msg.name, layer_name); \
  512.                   return (topo_msg.error_code)
  513.  
  514. #define TOPO_MSG_UNIT_MISSING(unit_name) \
  515.                   topo_msg.error_code = KRERR_UNIT_MISSING; \
  516.                   topo_msg.src_error_unit = 0; \
  517.                   topo_msg.dest_error_unit = 0; \
  518.                   strcpy (topo_msg.name, unit_name); \
  519.                   return (topo_msg.error_code)
  520.  
  521. #define TOPO_MSG_UNDETERMINED_UNIT(unit_ptr) \
  522.                   topo_msg.error_code = KRERR_UNDETERMINED_UNIT; \
  523.                   topo_msg.src_error_unit = 0; \
  524.                   topo_msg.dest_error_unit = (unit_ptr)-unit_array
  525.  
  526. #define TOPO_MSG_ACT_FUNC(unit_ptr) \
  527.                   topo_msg.error_code = KRERR_ACT_FUNC; \
  528.                   topo_msg.src_error_unit = 0; \
  529.                   topo_msg.dest_error_unit = (unit_ptr)-unit_array; \
  530.                   return (topo_msg.error_code)
  531.  
  532. #define TOPO_MSG_OUT_FUNC(unit_ptr) \
  533.                   topo_msg.error_code = KRERR_OUT_FUNC; \
  534.                   topo_msg.src_error_unit = 0; \
  535.                   topo_msg.dest_error_unit = (unit_ptr)-unit_array; \
  536.                   return (topo_msg.error_code)
  537.  
  538. #define TOPO_MSG_SITE_FUNC(unit_ptr) \
  539.                   topo_msg.error_code = KRERR_SITE_FUNC; \
  540.                   topo_msg.src_error_unit = 0; \
  541.                   topo_msg.dest_error_unit = (unit_ptr)-unit_array; \
  542.                   return (topo_msg.error_code)
  543.  
  544. #define TOPO_MSG_UNEXPECTED_SITES(unit_ptr) \
  545.                   topo_msg.error_code = KRERR_UNEXPECTED_SITES; \
  546.                   topo_msg.src_error_unit = 0; \
  547.                   topo_msg.dest_error_unit = (unit_ptr)-unit_array; \
  548.                   return (topo_msg.error_code)
  549.  
  550. #define TOPO_MSG_SITE_MISSING(unit_ptr) \
  551.                   topo_msg.error_code = KRERR_SITE_MISSING; \
  552.                   topo_msg.src_error_unit = 0; \
  553.                   topo_msg.dest_error_unit = (unit_ptr)-unit_array; \
  554.                   return (topo_msg.error_code)
  555.  
  556. #define TOPO_MSG_UNEXPECTED_DIRECT_INPUTS(unit_ptr) \
  557.                   topo_msg.error_code = KRERR_UNEXPECTED_DIRECT_INPUTS; \
  558.                   topo_msg.src_error_unit = 0; \
  559.                   topo_msg.dest_error_unit = (unit_ptr)-unit_array; \
  560.                   return (topo_msg.error_code)
  561.  
  562. #define TOPO_MSG_UNEXPECTED_LINK(src_unit_ptr, dest_unit_ptr) \
  563.                   topo_msg.error_code = KRERR_UNEXPECTED_LINK; \
  564.                   topo_msg.src_error_unit = ((src_unit_ptr)-unit_array); \
  565.                   topo_msg.dest_error_unit = ((dest_unit_ptr)-unit_array); \
  566.                   return (topo_msg.error_code)
  567.  
  568. #define TOPO_MSG_LINK_MISSING(dest_unit_ptr) \
  569.                   topo_msg.error_code = KRERR_LINK_MISSING; \
  570.                   topo_msg.src_error_unit = 0; \
  571.                   topo_msg.dest_error_unit = ((dest_unit_ptr)-unit_array); \
  572.                   return (topo_msg.error_code)
  573.  
  574. #define TOPO_MSG_LINK_TO_WRONG_SITE(src_unit_ptr, dest_unit_ptr) \
  575.                   topo_msg.error_code = KRERR_LINK_TO_WRONG_SITE; \
  576.                   topo_msg.src_error_unit = ((src_unit_ptr)-unit_array); \
  577.                   topo_msg.dest_error_unit = ((dest_unit_ptr)-unit_array); \
  578.                   return (topo_msg.error_code)
  579.  
  580.  
  581. #define ART1_RETURN_NET_ERROR(ret_code)  return ((ret_code = KRERR_TOPOLOGY))
  582.  
  583. #define ART2_RETURN_NET_ERROR(ret_code)  return ((ret_code = KRERR_TOPOLOGY))
  584.  
  585. #define ARTMAP_RETURN_NET_ERROR(ret_code) return ((ret_code = KRERR_TOPOLOGY))
  586.  
  587.  
  588.  
  589. #endif  /* ifndef __KR_ART_DEF */
  590.